The use of hardware systems to store and process data generally benefits from increased storage capacity and higher network bandwidths. Compression techniques are useful to reduce the amount of storage necessary to store a given dataset and/or to reduce the network bandwidth necessary to transfer data. Huffman coding is one such compression technique. Huffman coding is characterized by the use of variable length codewords with more frequently used symbols being encoded with fewer bits than less frequently used symbols. Huffman coding may be used by itself to compress plaintext data or may be combined with the Lempel-Ziv (LZ) coding technique or one of the variants of LZ coding (e.g., LZW, LZSS, LZMA, etc.). Because Huffman coding uses variable length codewords, the resulting compressed output data is not byte-aligned, which means the decoder does not know where a given codeword in a sequence of codeword begins and ends without having decoded the previous codeword in the sequence. As a result, the decoder serially decodes the compressed data by decoding the first codeword during which the length of the first codeword is determined. Once the first decoder is decoded and its length determined, the decoder then can determine where the second codeword begins. The second codeword is then decoded. After the second codeword is decoded and its length determined, the third codeword can be decoded, and so on.